

package cn.edu.nsmc.modules.sys.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import cn.edu.nsmc.common.validator.group.AddGroup;
import cn.edu.nsmc.common.validator.group.UpdateGroup;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 系统用户
 *
 *
 */
@Data
@TableName("sys_user")
@Accessors(chain = true)
public class SysUserEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 用户ID
	 */
	@TableId
	private Long userId;

	/**
	 * 用户名
	 */
	@ExcelProperty("用户名")
	@NotBlank(message="用户名不能为空", groups = {AddGroup.class, UpdateGroup.class})
	private String username;

	/**
	 * 密码
	 */
	@NotBlank(message="密码不能为空", groups = AddGroup.class)
	private String password;
	private String name;

	/**
	 * 盐
	 */
	private String salt;

	/**
	 * 邮箱
	 */
	@ExcelProperty("邮箱")
	@NotBlank(message="邮箱不能为空", groups = {AddGroup.class, UpdateGroup.class})
	@Email(message="邮箱格式不正确", groups = {AddGroup.class, UpdateGroup.class})
	private String email;

	/**
	 * 手机号
	 */
	@ExcelProperty("手机号")
	private String mobile;
	private String avatarUrl;

	/**
	 * 状态  0：禁用   1：正常
	 */
	private Integer status;

	/**
	 * 用户类型 1：管理员 2：职工 3：医护 4：学生  5：维修人员 6：教师
	 */
	private Integer type;

	/**
	 * 0:未设置 1:男 2:女
	 */
	private Integer gender;
	@TableField(exist=false)
	@ExcelProperty("性别")
	private String genderString;

	/**
	 * 角色ID列表
	 */
	@TableField(exist=false)
	private List<Long> roleIdList;

	/**
	 * 创建者ID
	 */
	private Long createUserId;

	/**
	 * 创建时间
	 */
	private Date createTime;


	/**
	 * 小程序使用状态  0：未使用   1：使用
	 */
	@ApiModelProperty("小程序使用状态  0：未使用   1：使用")
	private Integer miniUse;
	/**
	 * 小程序关注状态  0：未关注   1：关注
	 */
	@ApiModelProperty("小程序关注状态  0：未关注   1：关注")
	private Integer miniAttention;
	/**
	 * 备注信息
	 */
	@Size(max= 255,message="编码长度不能超过255")
	@ApiModelProperty("备注信息")
	@Length(max= 255,message="编码长度不能超过255")
	@ExcelProperty("备注")
	private String memo;
	/**
	 * 部门Id
	 */
	@ApiModelProperty("部门Id")
	private Integer departmentId;

	@TableField(exist=false)
	@ExcelProperty("部门")
	private String departmentName;
	/**
	 * 学号/工会
	 */
	@ExcelProperty("工号")
	@ApiModelProperty("学号/工会")
	private String personalNumber;
	/**
	 * 小程序 openId
	 */
	private String openId;
	/**
	 * 头像
	 */
	private String portrait;
	/**
	 * session key
	 */
	private String sessionKey;

	@TableField(exist=false)
	private Date startTime;
	@TableField(exist=false)
	private Date endTime;
}
